Skip to content

fix: treat a function call's None args as empty in sync AFC, matching async - #3011

Open
Yasser-Ameur wants to merge 2 commits into
googleapis:mainfrom
Yasser-Ameur:fix/sync-afc-none-args
Open

Yasser-Ameur wants to merge 2 commits into
googleapis:mainfrom
Yasser-Ameur:fix/sync-afc-none-args

Conversation

@Yasser-Ameur

Copy link
Copy Markdown

The synchronous automatic function calling helper get_function_response_parts skips any FunctionCall whose args field is None, which happens for any tool declared with no parameters. Chat.send_message therefore hands the bare function call back to the caller instead of running the tool.

The async twin, get_function_response_parts_async, already treats None as an empty dict before invoking the tool. That fallback was added in commit e3be9af (Add Agent Platform MCP support to async generate_content) but the sync function was never updated to match, so AsyncChat.send_message and Chat.send_message diverge for zero argument tools.

This change mirrors the async fallback in the sync function, two lines, no new abstraction, so both paths behave the same way.

Added three offline tests to the existing test_get_function_response_parts.py covering None args on both the sync and async paths and empty dict args, so the regression is caught either way in the future.

I can share a small repro script alongside the tests if useful for review.

@google-cla

google-cla Bot commented Sep 26, 2026

Copy link
Copy Markdown

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant